Skip Headers

Oracle® Database Backup and Recovery Advanced User's Guide 10g Release 2 (10.2) Part Number B14191-02 |
Home | Book List | Contents | Index | Master Index | Feedback

Previous | Next
| View PDF

# Creating a Duplicate Database on a Local or Remote Host

The procedure to create a duplicate database depends on your configuration. This section contains the following topics:

- Duplicating a Database on a Remote Host with the Same Directory Structure

- Duplicating a Database on a Remote Host with a Different Directory Structure

- Creating a Duplicate Database on the Local Host

- Using RMAN DUPLICATE with OMF and ASM

- Duplicating a Database to ASM Storage

## Duplicating a Database on a Remote Host with the Same Directory Structure

The simplest case is to duplicate the database to a different host and to use the same directory structure. In this case, you do not need to change the initialization parameter file or set new filenames for the duplicate datafiles.

1. Follow the steps in "Preparing the RMAN DUPLICATE Auxiliary Instance: Basic Steps".

2. Run the `DUPLICATE` command, making sure to do the following:

   - If automatic channels are not configured, then allocate at least one auxiliary channel.

   - Specify the `NOFILENAMECHECK` parameter on the `DUPLICATE` command.

   - Specify the `PFILE` parameter if starting the auxiliary instance with a client-side parameter file. The client-side parameter file must exist on the same host as the RMAN client used to perform the duplication.

   The following example assumes that the RMAN client is running on the duplicate host. It duplicates the database with an automatic channel, specifies a client-side initialization parameter file, and specifies the `NOFILENAMECHECK` option:

       DUPLICATE TARGET DATABASE TO dupdb
         # specify client-side parameter file (on same host as RMAN client) for
         # auxiliary instance if necessary
         PFILE = /dup/oracle/dbs/initDUPDB.ora
         NOFILENAMECHECK;

RMAN automatically allocates the configured channels, then uses all incremental backups, archived redo log backups, and archived redo logs to perform incomplete recovery. Finally, RMAN opens the database with the `RESETLOGS` option to create the online redo logs.

## Duplicating a Database on a Remote Host with a Different Directory Structure

If you create the duplicate database on a host with a different directory structure, then you must change several initialization parameters in order to generate new filenames for the duplicate database datafiles on the new directory structure. The different techniques available are described in "Renaming Datafiles in RMAN DUPLICATE DATABASE".

### Converting Filenames with Only Initialization Parameters

This procedure assumes that you use only initialization parameters to rename the duplicate datafiles and log files.

1. Follow the steps in "Preparing the RMAN DUPLICATE Auxiliary Instance: Basic Steps". You can either create a client-side parameter file, or copy the parameter file from its location in the target host directory structure to the same location in the duplicate host directory structure using operating system utilities.

   Perform the following tasks:

   - Review all initialization parameters that end in `_DEST` and specify a path name. Some may need to be changed.

   - Set `DB_FILE_NAME_CONVERT` so that it captures all the target datafiles and converts them appropriately, for example, from `/oracle/oradata/` to `/dup/oracle/oradata/`.

   - Set `LOG_FILE_NAME_CONVERT` so that it captures all the online redo logs and converts them appropriately, for example, `/oracle/oradata/redo` to `/dup/oracle/oradata/redo`.

     You can set multiple conversion pairs in `DB_FILE_NAME_CONVERT` and `LOG_FILE_NAME_CONVERT`. For example, you can specify that `DB_FILE_NAME_CONVERT` changes `/disk1/dbs` to `/dup1/dbs` and `/disk2/dbs` to `/dub2/dbs`.

     You can also use the `CONFIGURE AUXNAME` or `SET NEWNAME` commands to rename individual datafiles if you cannot easily generate all of your desired filenames using `DB_FILE_NAME_CONVERT` patterns. As described in "Using RMAN DUPLICATE with OMF and ASM", you can also duplicate your database to an Oracle Managed Files location and let the database generate names for your files.

2. Perform the following operations when running the duplication:

   - If automatic channels are not configured, then allocate at least one auxiliary channel.

   - If using a client-side parameter file to start the auxiliary instance, specify the `PFILE` parameter.

#### Converting Filenames with Only Initialization Parameters: Example

The following example assumes that the duplicate host can access the same media manager as the primary database host. The example duplicates the database with an automatic `sbt` channel and uses a server-side parameter file located on the duplicate host to restart the auxiliary instance:

    DUPLICATE
      TARGET DATABASE TO dupdb
      DEVICE TYPE sbt # restores from tape backups;
    # DUPLICATE DEVICE TYPE sbt works only if the sbt device is configured
    # by CONFIGURE CHANNEL, CONFIGURE DEVICE TYPE, or CONFIGURE DEFAULT DEVICE.

RMAN uses all incremental backups, archived redo log backups, and archived redo logs to perform incomplete recovery. RMAN then shuts down, starts, and opens the database with the `RESETLOGS` option to create the online redo logs.

### Converting Filenames with Only DUPLICATE Parameters

This procedure assumes that you use the `DB_FILE_NAME_CONVERT` parameter of the `DUPLICATE` command to rename the duplicate datafiles, and the `LOGFILE` clause to specify names and sizes for the online redo logs.

Perform the following operations when running the duplication:

- If automatic auxiliary channels are not configured, then allocate at least one auxiliary channel.

- Specify the names and sizes for the duplicate database redo logs in the `LOGFILE` clause.

- Specify new filenames for the duplicate database datafiles with the `DB_FILE_NAME_CONVERT` parameter.

- If using a client-side parameter file to start the auxiliary instance, specify the `PFILE` parameter.

The following example duplicates the database using configured channels and specifies an initialization parameter file:

    DUPLICATE TARGET DATABASE TO dupdb
      # specify client-side parameter file for auxiliary instance
      PFILE = /dup/oracle/dbs/initDUPDB.ora
      DB_FILE_NAME_CONVERT=(/oracle/oradata/trgt/,/dup/oracle/oradata/trgt/)
      LOGFILE
        '/dup/oracle/oradata/trgt/redo01.log' SIZE 200K,
        '/dup/oracle/oradata/trgt/redo02.log' SIZE 200K,
        '/dup/oracle/oradata/trgt/redo03.log' SIZE 200K;

### Using RMAN DUPLICATE With SET NEWNAME: Example

This procedure assumes that you use the `SET` `NEWNAME` command to rename the duplicate datafiles.

1. Follow the steps in "Preparing the RMAN DUPLICATE Auxiliary Instance: Basic Steps", making sure to use an operating system utility to copy the parameter file from its location in the target host directory structure to the same location in the duplicate host. Set all initialization parameters that end in `_DEST` and specify a path name.

2. Perform the following operations when running the duplication:

   - If channels are not configured for the auxiliary database, then allocate at least one auxiliary channel.

   - If desired, specify the same number of redo log members and groups that are used in the target database.

   - Specify new filenames for the duplicate database datafiles.

   - If you use a client-side parameter file to start the auxiliary instance, then specify the `PFILE` parameter.

   The following example uses configured channels and a default server-side initialization parameter file for the database duplication, and uses the `LOGFILE` clause to specify names and sizes for the online redo logs:

       RUN
       {
         # set new filenames for the datafiles
         SET NEWNAME FOR DATAFILE 1 TO '/dup/oracle/oradata/trgt/system01.dbf';
         SET NEWNAME FOR DATAFILE 2 TO '/dup/oracle/oradata/trgt/undotbs01.dbf';
         . . .
         # issue the duplicate command
         DUPLICATE TARGET DATABASE TO dupdb
         # create at least two online redo log groups
         LOGFILE
           GROUP1
           (
             '/dup/oracle/oradata/trgt/redo01a.log',
             '/dup/oracle/oradata/trgt/redo01b.log',
             '/dup/oracle/oradata/trgt/redo01c.log';
           ) SIZE 200K,
           GROUP2
           (
             '/dup/oracle/oradata/trgt/redo02a.log',
             '/dup/oracle/oradata/trgt/redo02b.log',
             '/dup/oracle/oradata/trgt/redo02c.log';
           ) SIZE 200K,
           GROUP3
           (
             '/dup/oracle/oradata/trgt/redo03a.log',
             '/dup/oracle/oradata/trgt/redo03b.log',
             '/dup/oracle/oradata/trgt/redo03c.log';
           ) SIZE 200K;

RMAN uses all incremental backups, archived redo log backups, and archived redo logs to perform incomplete recovery. RMAN shuts down, starts up, and then opens the database with the `RESETLOGS` option to create the online logs.

### Using RMAN DUPLICATE With CONFIGURE AUXNAME: Example

This procedure assumes that you use the `CONFIGURE` `AUXNAME` command to rename the duplicate datafiles.

1. Follow the steps in "Preparing the RMAN DUPLICATE Auxiliary Instance: Basic Steps", making sure to use an operating system utility to copy the parameter file from its location in the target host directory structure to the same location in the duplicate host directory structure. Set all initialization parameters that end in `_DEST` and specify a path name.

2. Add the following features when creating the RMAN commands to perform the duplication:

   - Prepare `CONFIGURE AUXNAME` commands for all datafiles, to be executed before database duplication.

   - If automatic auxiliary channels are not allocated, then allocate at least one auxiliary channel.

   - Use a `LOGFILE` clause to specify redo log groups and members for the duplicate database. (You do not have to use the same number of redo log groups or redo log group members in the duplicate database as you did in the target database.)

   - If you start the auxiliary instance with a client-side parameter file, then specify the `PFILE` parameter. The client-side parameter file must reside on the same host as the RMAN client used to perform the duplication.

Example 13-2 uses `CONFIGURE AUXNAME` to set new datafile names, uses automatic channels and a client-side initialization parameter file for the database duplication, and uses the `LOGFILE` clause to specify names and sizes for the online redo logs.

Example 13-2 Using CONFIGURE AUXNAME to Generate Database Filenames

    # configure the new desired filenames
     CONFIGURE AUXNAME FOR DATAFILE 1
            TO '/dup/oracle/oradata/trgt/system01.dbf';
     CONFIGURE AUXNAME FOR DATAFILE 2
            TO '/dup/oracle/oradata/trgt/undotbs01.dbf';
    # ... add more CONFIGURE AUXNAME commands as needed

    # run the DUPLICATE command
    DUPLICATE TARGET DATABASE TO dupdb
    # specify client-side parameter file for auxiliary instance if necessary
    PFILE = /dup/oracle/dbs/initDUPDB.ora
    .
    .
    .
    # create at least two online redo log groups
     LOGFILE
        GROUP1
        (
          '/dup/oracle/oradata/trgt/redo01a.log',
          '/dup/oracle/oradata/trgt/redo01b.log',
          '/dup/oracle/oradata/trgt/redo01c.log';
        ) SIZE 200K,
        GROUP2
        (
          '/dup/oracle/oradata/trgt/redo02a.log',
          '/dup/oracle/oradata/trgt/redo02b.log',
          '/dup/oracle/oradata/trgt/redo02c.log';
        ) SIZE 200K,
        GROUP3
        (
          '/dup/oracle/oradata/trgt/redo03a.log',
          '/dup/oracle/oradata/trgt/redo03b.log',
          '/dup/oracle/oradata/trgt/redo03c.log';
        ) SIZE 200K;

RMAN uses all incremental backups, archived redo log backups, and archived redo logs to perform incomplete recovery and then opens the database with the `RESETLOGS` option to create the online redo logs.

After the duplication is complete, clear the configured auxiliary names for the datafiles in the duplicate database, so that they are not overwritten by future operations. For example, enter the following:

    # clear specified auxiliary names for the datafiles
    CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
    CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
    .
    .
    .

## Creating a Duplicate Database on the Local Host

When creating a duplicate database on the same host as the target database, follow the same procedure as for duplicating to a remote host with a different directory structure as described in "Duplicating a Database on a Remote Host with a Different Directory Structure".

You can duplicate the database to the same Oracle home as the target database, but you must use a different database name from the target database, and convert the filenames by means of the same methods used for conversion on a separate host.

Caution: Do not use the `NOFILENAMECHECK` option when duplicating to the same Oracle home as the primary database. If you do, then the `DUPLICATE` command may overwrite the datafiles of the target database.

## Using RMAN DUPLICATE with OMF and ASM

The following sections discuss requirements when creating some or all files of the duplicate database in OMF or ASM storage:

- Initialization Parameters for RMAN DUPLICATE to OMF Storage

- Duplicating a Database to ASM Storage

- Using SET NEWNAME with RMAN DUPLICATE to OMF

### Initialization Parameters for RMAN DUPLICATE to OMF Storage

When duplicating a database and storing the duplicate in OMF storage, you must make the following changes on the initialization parameter file for the duplicate database:

- Set the `DB_CREATE_FILE_DEST` initialization parameter to the desired OMF storage location. Any database files for which no other location is specified are created in `DB_CREATE_FILE_DEST` during `DUPLICATE`.

- For a duplicate database that is not a standby database, change the value of the `DB_NAME` initialization parameter. For a standby database, keep `DB_NAME` the same, but change the `DB_UNIQUE_NAME` initialization parameter.

- If duplicating for standby, set the `STANDBY_FILE_MANAGEMENT` initialization parameter to `AUTO`.

- Do not set the `CONTROL_FILES` initialization parameter if you want to create the new control files as Oracle Managed Files. Oracle recommends that you use an SPFILE at the duplicate database when using OMF for the control file.

- Do not set the `DB_FILE_NAME_CONVERT` initialization parameter. This will allow the database to generate valid OMF filenames for the duplicate datafiles.

  The default location for OMF files is `DB_CREATE_FILE_DEST`. You can override the default for individual files using SET NEWNAME, as described in "Using SET NEWNAME with RMAN DUPLICATE to OMF".

- Do not set the `LOG_FILE_NAME_CONVERT` initialization parameter. This will allow the database to generate valid OMF redo log filenames.

  To direct duplicate database online redo log files to OMF storage, you can use the `DB_CREATE_FILE_DEST`, `DB_RECOVERY_FILE_DEST` or `DB_CREATE_ONLINE_LOG_DEST_``n` initialization parameters to identify an OMF location for the online logs. Table 13-8, "Oracle Managed Files Initialization Parameter Settings" explains how to choose among these options.

You must also decide:

- How many copies of the control file are needed

- How many online redo logs members are needed

- Whether the online redo log and control file locations should be different from the datafile locations

These decisions determine whether you use the Oracle Managed Files initialization parameters `DB_RECOVERY_FILE_DEST`, `DB_CREATE_FILE_DEST`, or `DB_CREATE_ONLINE_DEST_``n`.

Table 13-8 explains the required initialization parameter values, depending upon your requirements.

Table 13-8 Oracle Managed Files Initialization Parameter Settings

Copies of control files and online redo logs | Control file, online log, and datafile locations | Required Initialization parameters
--- | --- | ---
n, where n is 3 or more | Same or different | `DB_CREATE_ONLINE_LOG_DEST_``n`
n, where n is 1 or more | Different | `DB_CREATE_ONLINE_LOG_DEST_``n`
2 | Same | `DB_RECOVERY_FILE_DEST`
1 | Same | `DB_CREATE_FILE_DEST`

### Duplicating a Database to ASM Storage

The procedure for creating a duplicate database to an Automatic Storage Management (ASM) location is similar to the procedure described in "Initialization Parameters for RMAN DUPLICATE to OMF Storage". The difference is that you must edit the initialization parameter file in the auxiliary instance to set all parameters that control the location where files are created at the duplicate, such as `DB_CREATE_FILE_DEST`, `DB_CREATE_ONLINE_DEST_``n`, and `CONTROL_FILES`, to the ASM disk group.

For example, edit the auxiliary instance parameter file as follows to create the database files in the disk group `disk1`:

    *.DB_CREATE_FILE_DEST = '+disk1'

### Using SET NEWNAME with RMAN DUPLICATE to OMF

If you want to store specific datafiles or tempfiles in an OMF destination, independent of the locations of the rest of the database files, then you can use the following steps:

- Set the `DB_CREATE_FILE_DEST` initialization parameter at the auxiliary instance to the desired location

- Enclose the `DUPLICATE` command in a RUN block

  Use `SET NEWNAME FOR DATAFILE ... TO NEW` and `SET NEWNAME FOR TEMPFILE ... TO NEW` commands in the RUN block with the `DUPLICATE` command

The specified files are created with OMF names in the location specified by `DB_CREATE_FILE_DEST`.

This technique is similar to the scenario described in "Using RMAN DUPLICATE With SET NEWNAME: Example"

You can also use `SET` `NEWNAME` to direct individual datafiles or tempfiles to a specific ASM disk group. For example:

    RUN {
       SET NEWNAME FOR DATAFILE 1 TO "+dgroup1";
       SET NEWNAME FOR DATAFILE 2 TO "+dgroup2";
    ...
       DUPLICATE TARGET DATABASE FOR STANDBY;
    }

See also: Oracle Database Backup and Recovery Reference for details on using `SET` `NEWNAME`